#include <stdio.h>

#define ElemType int
#define MaxSize  50

typedef struct {
    ElemType data[MaxSize];  // 存放栈中元素
    int top;                 // 栈顶指针
} SqStack;

// 初始化栈
void InitStack(SqStack &S) {
    S.top = -1;
}

// 判栈空
bool StackEmpty(SqStack S) {
    return S.top == -1;
}

// 进栈
bool Push(SqStack &S, ElemType x) {
    if (S.top == MaxSize - 1) {
        return false;
    } else {
        S.data[++S.top] = x;
        return true;
    }
}

// 出栈
bool Pop(SqStack &S, ElemType &x) {
    if (StackEmpty(S)) {
        return false;
    } else {
        x = S.data[S.top--];
        return true;
    }
}

// 获取栈顶元素
bool GetTop(SqStack S, ElemType &x) {
    if (StackEmpty(S)) {
        return false;
    } else {
        x = S.data[S.top];
        return true;
    }
}
